/*!
 * FullCalendar v1.6.4
 * Docs & License: http://arshaw.com/fullcalendar/
 * (c) 2013 Adam Shaw
 */
(function (t, e) {
    function n(e) {
        t.extend(!0, Ce, e)
    }

    function r(n, r, c) {
        function u(t) {
            ae ? p() && (S(), M(t)) : f()
        }

        function f() {
            oe = r.theme ? "ui" : "fc", n.addClass("fc"), r.isRTL ? n.addClass("fc-rtl") : n.addClass("fc-ltr"), r.theme && n.addClass("ui-widget"), ae = t("<div class='fc-content' style='position:relative'/>").prependTo(n), ne = new a(ee, r), re = ne.render(), re && n.prepend(re), y(r.defaultView), r.handleWindowResize && t(window).resize(x), m() || v()
        }

        function v() {
            setTimeout(function () {
                !ie.start && m() && C()
            }, 0)
        }

        function h() {
            ie && (te("viewDestroy", ie, ie, ie.element), ie.triggerEventDestroy()), t(window).unbind("resize", x), ne.destroy(), ae.remove(), n.removeClass("fc fc-rtl ui-widget")
        }

        function p() {
            return n.is(":visible")
        }

        function m() {
            return t("body").is(":visible")
        }

        function y(t) {
            ie && t == ie.name || D(t)
        }

        function D(e) {
            he++, ie && (te("viewDestroy", ie, ie, ie.element), Y(), ie.triggerEventDestroy(), G(), ie.element.remove(), ne.deactivateButton(ie.name)), ne.activateButton(e), ie = new Se[e](t("<div class='fc-view fc-view-" + e + "' style='position:relative'/>").appendTo(ae), ee), C(), $(), he--
        }

        function C(t) {
            (!ie.start || t || ie.start > ge || ge >= ie.end) && p() && M(t)
        }

        function M(t) {
            he++, ie.start && (te("viewDestroy", ie, ie, ie.element), Y(), N()), G(), ie.render(ge, t || 0), T(), $(), (ie.afterRender || A)(), _(), P(), te("viewRender", ie, ie, ie.element), ie.trigger("viewDisplay", de), he--, z()
        }

        function E() {
            p() && (Y(), N(), S(), T(), F())
        }

        function S() {
            le = r.contentHeight ? r.contentHeight : r.height ? r.height - (re ? re.height() : 0) - R(ae) : Math.round(ae.width() / Math.max(r.aspectRatio, .5))
        }

        function T() {
            le === e && S(), he++, ie.setHeight(le), ie.setWidth(ae.width()), he--, se = n.outerWidth()
        }

        function x() {
            if (!he)if (ie.start) {
                var t = ++ve;
                setTimeout(function () {
                    t == ve && !he && p() && se != (se = n.outerWidth()) && (he++, E(), ie.trigger("windowResize", de), he--)
                }, 200)
            } else v()
        }

        function k() {
            N(), W()
        }

        function H(t) {
            N(), F(t)
        }

        function F(t) {
            p() && (ie.setEventData(pe), ie.renderEvents(pe, t), ie.trigger("eventAfterAllRender"))
        }

        function N() {
            ie.triggerEventDestroy(), ie.clearEvents(), ie.clearEventData()
        }

        function z() {
            !r.lazyFetching || ue(ie.visStart, ie.visEnd) ? W() : F()
        }

        function W() {
            fe(ie.visStart, ie.visEnd)
        }

        function O(t) {
            pe = t, F()
        }

        function L(t) {
            H(t)
        }

        function _() {
            ne.updateTitle(ie.title)
        }

        function P() {
            var t = new Date;
            t >= ie.start && ie.end > t ? ne.disableButton("today") : ne.enableButton("today")
        }

        function q(t, n, r) {
            ie.select(t, n, r === e ? !0 : r)
        }

        function Y() {
            ie && ie.unselect()
        }

        function B() {
            C(-1)
        }

        function j() {
            C(1)
        }

        function I() {
            i(ge, -1), C()
        }

        function X() {
            i(ge, 1), C()
        }

        function J() {
            ge = new Date, C()
        }

        function V(t, e, n) {
            t instanceof Date ? ge = d(t) : g(ge, t, e, n), C()
        }

        function U(t, n, r) {
            t !== e && i(ge, t), n !== e && s(ge, n), r !== e && l(ge, r), C()
        }

        function Z() {
            return d(ge)
        }

        function G() {
            ae.css({width: "100%", height: ae.height(), overflow: "hidden"})
        }

        function $() {
            ae.css({width: "", height: "", overflow: ""})
        }

        function Q() {
            return ie
        }

        function K(t, n) {
            return n === e ? r[t] : (("height" == t || "contentHeight" == t || "aspectRatio" == t) && (r[t] = n, E()), e)
        }

        function te(t, n) {
            return r[t] ? r[t].apply(n || de, Array.prototype.slice.call(arguments, 2)) : e
        }

        var ee = this;
        ee.options = r, ee.render = u, ee.destroy = h, ee.refetchEvents = k, ee.reportEvents = O, ee.reportEventChange = L, ee.rerenderEvents = H, ee.changeView = y, ee.select = q, ee.unselect = Y, ee.prev = B, ee.next = j, ee.prevYear = I, ee.nextYear = X, ee.today = J, ee.gotoDate = V, ee.incrementDate = U, ee.formatDate = function (t, e) {
            return w(t, e, r)
        }, ee.formatDates = function (t, e, n) {
            return b(t, e, n, r)
        }, ee.getDate = Z, ee.getView = Q, ee.option = K, ee.trigger = te, o.call(ee, r, c);
        var ne, re, ae, oe, ie, se, le, ce, ue = ee.isFetchNeeded, fe = ee.fetchEvents, de = n[0], ve = 0, he = 0, ge = new Date, pe = [];
        g(ge, r.year, r.month, r.date), r.droppable && t(document).bind("dragstart",function (e, n) {
            var a = e.target, o = t(a);
            if (!o.parents(".fc").length) {
                var i = r.dropAccept;
                (t.isFunction(i) ? i.call(a, o) : o.is(i)) && (ce = a, ie.dragStart(ce, e, n))
            }
        }).bind("dragstop", function (t, e) {
            ce && (ie.dragStop(ce, t, e), ce = null)
        })
    }

    function a(n, r) {
        function a() {
            v = r.theme ? "ui" : "fc";
            var n = r.header;
            return n ? h = t("<table class='fc-header' style='width:100%'/>").append(t("<tr/>").append(i("left")).append(i("center")).append(i("right"))) : e
        }

        function o() {
            h.remove()
        }

        function i(e) {
            var a = t("<td class='fc-header-" + e + "'/>"), o = r.header[e];
            return o && t.each(o.split(" "), function (e) {
                e > 0 && a.append("<span class='fc-header-space'/>");
                var o;
                t.each(this.split(","), function (e, i) {
                    if ("title" == i)a.append("<span class='fc-header-title'><h2>&nbsp;</h2></span>"), o && o.addClass(v + "-corner-right"), o = null; else {
                        var s;
                        if (n[i] ? s = n[i] : Se[i] && (s = function () {
                            u.removeClass(v + "-state-hover"), n.changeView(i)
                        }), s) {
                            var l = r.theme ? P(r.buttonIcons, i) : null, c = P(r.buttonText, i), u = t("<span class='fc-button fc-button-" + i + " " + v + "-state-default'>" + (l ? "<span class='fc-icon-wrap'><span class='ui-icon ui-icon-" + l + "'/>" + "</span>" : c) + "</span>").click(function () {
                                u.hasClass(v + "-state-disabled") || s()
                            }).mousedown(function () {
                                u.not("." + v + "-state-active").not("." + v + "-state-disabled").addClass(v + "-state-down")
                            }).mouseup(function () {
                                u.removeClass(v + "-state-down")
                            }).hover(function () {
                                u.not("." + v + "-state-active").not("." + v + "-state-disabled").addClass(v + "-state-hover")
                            },function () {
                                u.removeClass(v + "-state-hover").removeClass(v + "-state-down")
                            }).appendTo(a);
                            Y(u), o || u.addClass(v + "-corner-left"), o = u
                        }
                    }
                }), o && o.addClass(v + "-corner-right")
            }), a
        }

        function s(t) {
            h.find("h2").html(t)
        }

        function l(t) {
            h.find("span.fc-button-" + t).addClass(v + "-state-active")
        }

        function c(t) {
            h.find("span.fc-button-" + t).removeClass(v + "-state-active")
        }

        function u(t) {
            h.find("span.fc-button-" + t).addClass(v + "-state-disabled")
        }

        function f(t) {
            h.find("span.fc-button-" + t).removeClass(v + "-state-disabled")
        }

        var d = this;
        d.render = a, d.destroy = o, d.updateTitle = s, d.activateButton = l, d.deactivateButton = c, d.disableButton = u, d.enableButton = f;
        var v, h = t([])
    }

    function o(n, r) {
        function a(t, e) {
            return!E || E > t || e > S
        }

        function o(t, e) {
            E = t, S = e, W = [];
            var n = ++R, r = F.length;
            N = r;
            for (var a = 0; r > a; a++)i(F[a], n)
        }

        function i(e, r) {
            s(e, function (a) {
                if (r == R) {
                    if (a) {
                        n.eventDataTransform && (a = t.map(a, n.eventDataTransform)), e.eventDataTransform && (a = t.map(a, e.eventDataTransform));
                        for (var o = 0; a.length > o; o++)a[o].source = e, w(a[o]);
                        W = W.concat(a)
                    }
                    N--, N || k(W)
                }
            })
        }

        function s(r, a) {
            var o, i, l = Ee.sourceFetchers;
            for (o = 0; l.length > o; o++) {
                if (i = l[o](r, E, S, a), i === !0)return;
                if ("object" == typeof i)return s(i, a), e
            }
            var c = r.events;
            if (c)t.isFunction(c) ? (m(), c(d(E), d(S), function (t) {
                a(t), y()
            })) : t.isArray(c) ? a(c) : a(); else {
                var u = r.url;
                if (u) {
                    var f, v = r.success, h = r.error, g = r.complete;
                    f = t.isFunction(r.data) ? r.data() : r.data;
                    var p = t.extend({}, f || {}), w = X(r.startParam, n.startParam), b = X(r.endParam, n.endParam);
                    w && (p[w] = Math.round(+E / 1e3)), b && (p[b] = Math.round(+S / 1e3)), m(), t.ajax(t.extend({}, Te, r, {data: p, success: function (e) {
                        e = e || [];
                        var n = I(v, this, arguments);
                        t.isArray(n) && (e = n), a(e)
                    }, error: function () {
                        I(h, this, arguments), a()
                    }, complete: function () {
                        I(g, this, arguments), y()
                    }}))
                } else a()
            }
        }

        function l(t) {
            t = c(t), t && (N++, i(t, R))
        }

        function c(n) {
            return t.isFunction(n) || t.isArray(n) ? n = {events: n} : "string" == typeof n && (n = {url: n}), "object" == typeof n ? (b(n), F.push(n), n) : e
        }

        function u(e) {
            F = t.grep(F, function (t) {
                return!D(t, e)
            }), W = t.grep(W, function (t) {
                return!D(t.source, e)
            }), k(W)
        }

        function f(t) {
            var e, n, r = W.length, a = x().defaultEventEnd, o = t.start - t._start, i = t.end ? t.end - (t._end || a(t)) : 0;
            for (e = 0; r > e; e++)n = W[e], n._id == t._id && n != t && (n.start = new Date(+n.start + o), n.end = t.end ? n.end ? new Date(+n.end + i) : new Date(+a(n) + i) : null, n.title = t.title, n.url = t.url, n.allDay = t.allDay, n.className = t.className, n.editable = t.editable, n.color = t.color, n.backgroundColor = t.backgroundColor, n.borderColor = t.borderColor, n.textColor = t.textColor, w(n));
            w(t), k(W)
        }

        function v(t, e) {
            w(t), t.source || (e && (H.events.push(t), t.source = H), W.push(t)), k(W)
        }

        function h(e) {
            if (e) {
                if (!t.isFunction(e)) {
                    var n = e + "";
                    e = function (t) {
                        return t._id == n
                    }
                }
                W = t.grep(W, e, !0);
                for (var r = 0; F.length > r; r++)t.isArray(F[r].events) && (F[r].events = t.grep(F[r].events, e, !0))
            } else {
                W = [];
                for (var r = 0; F.length > r; r++)t.isArray(F[r].events) && (F[r].events = [])
            }
            k(W)
        }

        function g(e) {
            return t.isFunction(e) ? t.grep(W, e) : e ? (e += "", t.grep(W, function (t) {
                return t._id == e
            })) : W
        }

        function m() {
            z++ || T("loading", null, !0, x())
        }

        function y() {
            --z || T("loading", null, !1, x())
        }

        function w(t) {
            var r = t.source || {}, a = X(r.ignoreTimezone, n.ignoreTimezone);
            t._id = t._id || (t.id === e ? "_fc" + xe++ : t.id + ""), t.date && (t.start || (t.start = t.date), delete t.date), t._start = d(t.start = p(t.start, a)), t.end = p(t.end, a), t.end && t.end <= t.start && (t.end = null), t._end = t.end ? d(t.end) : null, t.allDay === e && (t.allDay = X(r.allDayDefault, n.allDayDefault)), t.className ? "string" == typeof t.className && (t.className = t.className.split(/\s+/)) : t.className = []
        }

        function b(t) {
            t.className ? "string" == typeof t.className && (t.className = t.className.split(/\s+/)) : t.className = [];
            for (var e = Ee.sourceNormalizers, n = 0; e.length > n; n++)e[n](t)
        }

        function D(t, e) {
            return t && e && C(t) == C(e)
        }

        function C(t) {
            return("object" == typeof t ? t.events || t.url : "") || t
        }

        var M = this;
        M.isFetchNeeded = a, M.fetchEvents = o, M.addEventSource = l, M.removeEventSource = u, M.updateEvent = f, M.renderEvent = v, M.removeEvents = h, M.clientEvents = g, M.normalizeEvent = w;
        for (var E, S, T = M.trigger, x = M.getView, k = M.reportEvents, H = {events: []}, F = [H], R = 0, N = 0, z = 0, W = [], A = 0; r.length > A; A++)c(r[A])
    }

    function i(t, e, n) {
        return t.setFullYear(t.getFullYear() + e), n || f(t), t
    }

    function s(t, e, n) {
        if (+t) {
            var r = t.getMonth() + e, a = d(t);
            for (a.setDate(1), a.setMonth(r), t.setMonth(r), n || f(t); t.getMonth() != a.getMonth();)t.setDate(t.getDate() + (a > t ? 1 : -1))
        }
        return t
    }

    function l(t, e, n) {
        if (+t) {
            var r = t.getDate() + e, a = d(t);
            a.setHours(9), a.setDate(r), t.setDate(r), n || f(t), c(t, a)
        }
        return t
    }

    function c(t, e) {
        if (+t)for (; t.getDate() != e.getDate();)t.setTime(+t + (e > t ? 1 : -1) * Fe)
    }

    function u(t, e) {
        return t.setMinutes(t.getMinutes() + e), t
    }

    function f(t) {
        return t.setHours(0), t.setMinutes(0), t.setSeconds(0), t.setMilliseconds(0), t
    }

    function d(t, e) {
        return e ? f(new Date(+t)) : new Date(+t)
    }

    function v() {
        var t, e = 0;
        do t = new Date(1970, e++, 1); while (t.getHours());
        return t
    }

    function h(t, e) {
        return Math.round((d(t, !0) - d(e, !0)) / He)
    }

    function g(t, n, r, a) {
        n !== e && n != t.getFullYear() && (t.setDate(1), t.setMonth(0), t.setFullYear(n)), r !== e && r != t.getMonth() && (t.setDate(1), t.setMonth(r)), a !== e && t.setDate(a)
    }

    function p(t, n) {
        return"object" == typeof t ? t : "number" == typeof t ? new Date(1e3 * t) : "string" == typeof t ? t.match(/^\d+(\.\d+)?$/) ? new Date(1e3 * parseFloat(t)) : (n === e && (n = !0), m(t, n) || (t ? new Date(t) : null)) : null
    }

    function m(t, e) {
        var n = t.match(/^([0-9]{4})(-([0-9]{2})(-([0-9]{2})([T ]([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2})(:?([0-9]{2}))?))?)?)?)?$/);
        if (!n)return null;
        var r = new Date(n[1], 0, 1);
        if (e || !n[13]) {
            var a = new Date(n[1], 0, 1, 9, 0);
            n[3] && (r.setMonth(n[3] - 1), a.setMonth(n[3] - 1)), n[5] && (r.setDate(n[5]), a.setDate(n[5])), c(r, a), n[7] && r.setHours(n[7]), n[8] && r.setMinutes(n[8]), n[10] && r.setSeconds(n[10]), n[12] && r.setMilliseconds(1e3 * Number("0." + n[12])), c(r, a)
        } else if (r.setUTCFullYear(n[1], n[3] ? n[3] - 1 : 0, n[5] || 1), r.setUTCHours(n[7] || 0, n[8] || 0, n[10] || 0, n[12] ? 1e3 * Number("0." + n[12]) : 0), n[14]) {
            var o = 60 * Number(n[16]) + (n[18] ? Number(n[18]) : 0);
            o *= "-" == n[15] ? 1 : -1, r = new Date(+r + 1e3 * 60 * o)
        }
        return r
    }

    function y(t) {
        if ("number" == typeof t)return 60 * t;
        if ("object" == typeof t)return 60 * t.getHours() + t.getMinutes();
        var e = t.match(/(\d+)(?::(\d+))?\s*(\w+)?/);
        if (e) {
            var n = parseInt(e[1], 10);
            return e[3] && (n %= 12, "p" == e[3].toLowerCase().charAt(0) && (n += 12)), 60 * n + (e[2] ? parseInt(e[2], 10) : 0)
        }
    }

    function w(t, e, n) {
        return b(t, null, e, n)
    }

    function b(t, e, n, r) {
        r = r || Ce;
        var a, o, i, s, l = t, c = e, u = n.length, f = "";
        for (a = 0; u > a; a++)if (o = n.charAt(a), "'" == o) {
            for (i = a + 1; u > i; i++)if ("'" == n.charAt(i)) {
                l && (f += i == a + 1 ? "'" : n.substring(a + 1, i), a = i);
                break
            }
        } else if ("(" == o) {
            for (i = a + 1; u > i; i++)if (")" == n.charAt(i)) {
                var d = w(l, n.substring(a + 1, i), r);
                parseInt(d.replace(/\D/, ""), 10) && (f += d), a = i;
                break
            }
        } else if ("[" == o) {
            for (i = a + 1; u > i; i++)if ("]" == n.charAt(i)) {
                var v = n.substring(a + 1, i), d = w(l, v, r);
                d != w(c, v, r) && (f += d), a = i;
                break
            }
        } else if ("{" == o)l = e, c = t; else if ("}" == o)l = t, c = e; else {
            for (i = u; i > a; i--)if (s = Ne[n.substring(a, i)]) {
                l && (f += s(l, r)), a = i - 1;
                break
            }
            i == a && l && (f += o)
        }
        return f
    }

    function D(t) {
        var e, n = new Date(t.getTime());
        return n.setDate(n.getDate() + 4 - (n.getDay() || 7)), e = n.getTime(), n.setMonth(0), n.setDate(1), Math.floor(Math.round((e - n) / 864e5) / 7) + 1
    }

    function C(t) {
        return t.end ? M(t.end, t.allDay) : l(d(t.start), 1)
    }

    function M(t, e) {
        return t = d(t), e || t.getHours() || t.getMinutes() ? l(t, 1) : f(t)
    }

    function E(n, r, a) {
        n.unbind("mouseover").mouseover(function (n) {
            for (var o, i, s, l = n.target; l != this;)o = l, l = l.parentNode;
            (i = o._fci) !== e && (o._fci = e, s = r[i], a(s.event, s.element, s), t(n.target).trigger(n)), n.stopPropagation()
        })
    }

    function S(e, n, r) {
        for (var a, o = 0; e.length > o; o++)a = t(e[o]), a.width(Math.max(0, n - x(a, r)))
    }

    function T(e, n, r) {
        for (var a, o = 0; e.length > o; o++)a = t(e[o]), a.height(Math.max(0, n - R(a, r)))
    }

    function x(t, e) {
        return k(t) + F(t) + (e ? H(t) : 0)
    }

    function k(e) {
        return(parseFloat(t.css(e[0], "paddingLeft", !0)) || 0) + (parseFloat(t.css(e[0], "paddingRight", !0)) || 0)
    }

    function H(e) {
        return(parseFloat(t.css(e[0], "marginLeft", !0)) || 0) + (parseFloat(t.css(e[0], "marginRight", !0)) || 0)
    }

    function F(e) {
        return(parseFloat(t.css(e[0], "borderLeftWidth", !0)) || 0) + (parseFloat(t.css(e[0], "borderRightWidth", !0)) || 0)
    }

    function R(t, e) {
        return N(t) + W(t) + (e ? z(t) : 0)
    }

    function N(e) {
        return(parseFloat(t.css(e[0], "paddingTop", !0)) || 0) + (parseFloat(t.css(e[0], "paddingBottom", !0)) || 0)
    }

    function z(e) {
        return(parseFloat(t.css(e[0], "marginTop", !0)) || 0) + (parseFloat(t.css(e[0], "marginBottom", !0)) || 0)
    }

    function W(e) {
        return(parseFloat(t.css(e[0], "borderTopWidth", !0)) || 0) + (parseFloat(t.css(e[0], "borderBottomWidth", !0)) || 0)
    }

    function A() {
    }

    function O(t, e) {
        return t - e
    }

    function L(t) {
        return Math.max.apply(Math, t)
    }

    function _(t) {
        return(10 > t ? "0" : "") + t
    }

    function P(t, n) {
        if (t[n] !== e)return t[n];
        for (var r, a = n.split(/(?=[A-Z])/), o = a.length - 1; o >= 0; o--)if (r = t[a[o].toLowerCase()], r !== e)return r;
        return t[""]
    }

    function q(t) {
        return t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/'/g, "&#039;").replace(/"/g, "&quot;").replace(/\n/g, "<br />")
    }

    function Y(t) {
        t.attr("unselectable", "on").css("MozUserSelect", "none").bind("selectstart.ui", function () {
            return!1
        })
    }

    function B(t) {
        t.children().removeClass("fc-first fc-last").filter(":first-child").addClass("fc-first").end().filter(":last-child").addClass("fc-last")
    }

    function j(t, e) {
        var n = t.source || {}, r = t.color, a = n.color, o = e("eventColor"), i = t.backgroundColor || r || n.backgroundColor || a || e("eventBackgroundColor") || o, s = t.borderColor || r || n.borderColor || a || e("eventBorderColor") || o, l = t.textColor || n.textColor || e("eventTextColor"), c = [];
        return i && c.push("background-color:" + i), s && c.push("border-color:" + s), l && c.push("color:" + l), c.join(";")
    }

    function I(e, n, r) {
        if (t.isFunction(e) && (e = [e]), e) {
            var a, o;
            for (a = 0; e.length > a; a++)o = e[a].apply(n, r) || o;
            return o
        }
    }

    function X() {
        for (var t = 0; arguments.length > t; t++)if (arguments[t] !== e)return arguments[t]
    }

    function J(t, e) {
        function n(t, e) {
            e && (s(t, e), t.setDate(1));
            var n = a("firstDay"), f = d(t, !0);
            f.setDate(1);
            var v = s(d(f), 1), g = d(f);
            l(g, -((g.getDay() - n + 7) % 7)), i(g);
            var p = d(v);
            l(p, (7 - p.getDay() + n) % 7), i(p, -1, !0);
            var m = c(), y = Math.round(h(p, g) / 7);
            "fixed" == a("weekMode") && (l(p, 7 * (6 - y)), y = 6), r.title = u(f, a("titleFormat")), r.start = f, r.end = v, r.visStart = g, r.visEnd = p, o(y, m, !0)
        }

        var r = this;
        r.render = n, Z.call(r, t, e, "month");
        var a = r.opt, o = r.renderBasic, i = r.skipHiddenDays, c = r.getCellsPerWeek, u = e.formatDate
    }

    function V(t, e) {
        function n(t, e) {
            e && l(t, 7 * e);
            var n = l(d(t), -((t.getDay() - a("firstDay") + 7) % 7)), u = l(d(n), 7), f = d(n);
            i(f);
            var v = d(u);
            i(v, -1, !0);
            var h = s();
            r.start = n, r.end = u, r.visStart = f, r.visEnd = v, r.title = c(f, l(d(v), -1), a("titleFormat")), o(1, h, !1)
        }

        var r = this;
        r.render = n, Z.call(r, t, e, "basicWeek");
        var a = r.opt, o = r.renderBasic, i = r.skipHiddenDays, s = r.getCellsPerWeek, c = e.formatDates
    }

    function U(t, e) {
        function n(t, e) {
            e && l(t, e), i(t, 0 > e ? -1 : 1);
            var n = d(t, !0), c = l(d(n), 1);
            r.title = s(t, a("titleFormat")), r.start = r.visStart = n, r.end = r.visEnd = c, o(1, 1, !1)
        }

        var r = this;
        r.render = n, Z.call(r, t, e, "basicDay");
        var a = r.opt, o = r.renderBasic, i = r.skipHiddenDays, s = e.formatDate
    }

    function Z(e, n, r) {
        function a(t, e, n) {
            ee = t, ne = e, re = n, o(), j || i(), s()
        }

        function o() {
            le = he("theme") ? "ui" : "fc", ce = he("columnFormat"), ue = he("weekNumbers"), de = he("weekNumberTitle"), ve = "iso" != he("weekNumberCalculation") ? "w" : "W"
        }

        function i() {
            Z = t("<div class='fc-event-container' style='position:absolute;z-index:8;top:0;left:0'/>").appendTo(e)
        }

        function s() {
            var n = c();
            L && L.remove(), L = t(n).appendTo(e), _ = L.find("thead"), P = _.find(".fc-day-header"), j = L.find("tbody"), I = j.find("tr"), X = j.find(".fc-day"), J = I.find("td:first-child"), V = I.eq(0).find(".fc-day > div"), U = I.eq(0).find(".fc-day-content > div"), B(_.add(_.find("tr"))), B(I), I.eq(0).addClass("fc-first"), I.filter(":last").addClass("fc-last"), X.each(function (e, n) {
                var r = Ee(Math.floor(e / ne), e % ne);
                ge("dayRender", O, r, t(n))
            }), y(X)
        }

        function c() {
            var t = "<table class='fc-border-separate' style='width:100%' cellspacing='0'>" + u() + v() + "</table>";
            return t
        }

        function u() {
            var t, e, n = le + "-widget-header", r = "";
            for (r += "<thead><tr>", ue && (r += "<th class='fc-week-number " + n + "'>" + q(de) + "</th>"), t = 0; ne > t; t++)e = Ee(0, t), r += "<th class='fc-day-header fc-" + ke[e.getDay()] + " " + n + "'>" + q(xe(e, ce)) + "</th>";
            return r += "</tr></thead>"
        }

        function v() {
            var t, e, n, r = le + "-widget-content", a = "";
            for (a += "<tbody>", t = 0; ee > t; t++) {
                for (a += "<tr class='fc-week'>", ue && (n = Ee(t, 0), a += "<td class='fc-week-number " + r + "'>" + "<div>" + q(xe(n, ve)) + "</div>" + "</td>"), e = 0; ne > e; e++)n = Ee(t, e), a += h(n);
                a += "</tr>"
            }
            return a += "</tbody>"
        }

        function h(t) {
            var e = le + "-widget-content", n = O.start.getMonth(), r = f(new Date), a = "", o = ["fc-day", "fc-" + ke[t.getDay()], e];
            return t.getMonth() != n && o.push("fc-other-month"), +t == +r ? o.push("fc-today", le + "-state-highlight") : r > t ? o.push("fc-past") : o.push("fc-future"), a += "<td class='" + o.join(" ") + "'" + " data-date='" + xe(t, "yyyy-MM-dd") + "'" + ">" + "<div>", re && (a += "<div class='fc-day-number'>" + t.getDate() + "</div>"), a += "<div class='fc-day-content'><div style='position:relative'>&nbsp;</div></div></div></td>"
        }

        function g(e) {
            Q = e;
            var n, r, a, o = Q - _.height();
            "variable" == he("weekMode") ? n = r = Math.floor(o / (1 == ee ? 2 : 6)) : (n = Math.floor(o / ee), r = o - n * (ee - 1)), J.each(function (e, o) {
                ee > e && (a = t(o), a.find("> div").css("min-height", (e == ee - 1 ? r : n) - R(a)))
            })
        }

        function p(t) {
            $ = t, ie.clear(), se.clear(), te = 0, ue && (te = _.find("th.fc-week-number").outerWidth()), K = Math.floor(($ - te) / ne), S(P.slice(0, -1), K)
        }

        function y(t) {
            t.click(w).mousedown(Me)
        }

        function w(e) {
            if (!he("selectable")) {
                var n = m(t(this).data("date"));
                ge("dayClick", this, n, !0, e)
            }
        }

        function b(t, e, n) {
            n && ae.build();
            for (var r = Te(t, e), a = 0; r.length > a; a++) {
                var o = r[a];
                y(D(o.row, o.leftCol, o.row, o.rightCol))
            }
        }

        function D(t, n, r, a) {
            var o = ae.rect(t, n, r, a, e);
            return be(o, e)
        }

        function C(t) {
            return d(t)
        }

        function M(t, e) {
            b(t, l(d(e), 1), !0)
        }

        function E() {
            Ce()
        }

        function T(t, e, n) {
            var r = Se(t), a = X[r.row * ne + r.col];
            ge("dayClick", a, t, e, n)
        }

        function x(t, e) {
            oe.start(function (t) {
                Ce(), t && D(t.row, t.col, t.row, t.col)
            }, e)
        }

        function k(t, e, n) {
            var r = oe.stop();
            if (Ce(), r) {
                var a = Ee(r);
                ge("drop", t, a, !0, e, n)
            }
        }

        function H(t) {
            return d(t.start)
        }

        function F(t) {
            return ie.left(t)
        }

        function N(t) {
            return ie.right(t)
        }

        function z(t) {
            return se.left(t)
        }

        function W(t) {
            return se.right(t)
        }

        function A(t) {
            return I.eq(t)
        }

        var O = this;
        O.renderBasic = a, O.setHeight = g, O.setWidth = p, O.renderDayOverlay = b, O.defaultSelectionEnd = C, O.renderSelection = M, O.clearSelection = E, O.reportDayClick = T, O.dragStart = x, O.dragStop = k, O.defaultEventEnd = H, O.getHoverListener = function () {
            return oe
        }, O.colLeft = F, O.colRight = N, O.colContentLeft = z, O.colContentRight = W, O.getIsCellAllDay = function () {
            return!0
        }, O.allDayRow = A, O.getRowCnt = function () {
            return ee
        }, O.getColCnt = function () {
            return ne
        }, O.getColWidth = function () {
            return K
        }, O.getDaySegmentContainer = function () {
            return Z
        }, fe.call(O, e, n, r), me.call(O), pe.call(O), G.call(O);
        var L, _, P, j, I, X, J, V, U, Z, $, Q, K, te, ee, ne, re, ae, oe, ie, se, le, ce, ue, de, ve, he = O.opt, ge = O.trigger, be = O.renderOverlay, Ce = O.clearOverlays, Me = O.daySelectionMousedown, Ee = O.cellToDate, Se = O.dateToCell, Te = O.rangeToSegments, xe = n.formatDate;
        Y(e.addClass("fc-grid")), ae = new ye(function (e, n) {
            var r, a, o;
            P.each(function (e, i) {
                r = t(i), a = r.offset().left, e && (o[1] = a), o = [a], n[e] = o
            }), o[1] = a + r.outerWidth(), I.each(function (n, i) {
                ee > n && (r = t(i), a = r.offset().top, n && (o[1] = a), o = [a], e[n] = o)
            }), o[1] = a + r.outerHeight()
        }), oe = new we(ae), ie = new De(function (t) {
            return V.eq(t)
        }), se = new De(function (t) {
            return U.eq(t)
        })
    }

    function G() {
        function t(t, e) {
            n.renderDayEvents(t, e)
        }

        function e() {
            n.getDaySegmentContainer().empty()
        }

        var n = this;
        n.renderEvents = t, n.clearEvents = e, de.call(n)
    }

    function $(t, e) {
        function n(t, e) {
            e && l(t, 7 * e);
            var n = l(d(t), -((t.getDay() - a("firstDay") + 7) % 7)), u = l(d(n), 7), f = d(n);
            i(f);
            var v = d(u);
            i(v, -1, !0);
            var h = s();
            r.title = c(f, l(d(v), -1), a("titleFormat")), r.start = n, r.end = u, r.visStart = f, r.visEnd = v, o(h)
        }

        var r = this;
        r.render = n, K.call(r, t, e, "agendaWeek");
        var a = r.opt, o = r.renderAgenda, i = r.skipHiddenDays, s = r.getCellsPerWeek, c = e.formatDates
    }

    function Q(t, e) {
        function n(t, e) {
            e && l(t, e), i(t, 0 > e ? -1 : 1);
            var n = d(t, !0), c = l(d(n), 1);
            r.title = s(t, a("titleFormat")), r.start = r.visStart = n, r.end = r.visEnd = c, o(1)
        }

        var r = this;
        r.render = n, K.call(r, t, e, "agendaDay");
        var a = r.opt, o = r.renderAgenda, i = r.skipHiddenDays, s = e.formatDate
    }

    function K(n, r, a) {
        function o(t) {
            We = t, i(), K ? c() : s()
        }

        function i() {
            qe = Ue("theme") ? "ui" : "fc", Ye = Ue("isRTL"), Be = y(Ue("minTime")), je = y(Ue("maxTime")), Ie = Ue("columnFormat"), Xe = Ue("weekNumbers"), Je = Ue("weekNumberTitle"), Ve = "iso" != Ue("weekNumberCalculation") ? "w" : "W", Re = Ue("snapMinutes") || Ue("slotMinutes")
        }

        function s() {
            var e, r, a, o, i, s = qe + "-widget-header", l = qe + "-widget-content", f = 0 == Ue("slotMinutes") % 15;
            for (c(), ce = t("<div style='position:absolute;z-index:2;left:0;width:100%'/>").appendTo(n), Ue("allDaySlot") ? (ue = t("<div class='fc-event-container' style='position:absolute;z-index:8;top:0;left:0'/>").appendTo(ce), e = "<table style='width:100%' class='fc-agenda-allday' cellspacing='0'><tr><th class='" + s + " fc-agenda-axis'>" + Ue("allDayText") + "</th>" + "<td>" + "<div class='fc-day-content'><div style='position:relative'/></div>" + "</td>" + "<th class='" + s + " fc-agenda-gutter'>&nbsp;</th>" + "</tr>" + "</table>", de = t(e).appendTo(ce), ve = de.find("tr"), C(ve.find("td")), ce.append("<div class='fc-agenda-divider " + s + "'>" + "<div class='fc-agenda-divider-inner'/>" + "</div>")) : ue = t([]), he = t("<div style='position:absolute;width:100%;overflow-x:hidden;overflow-y:auto'/>").appendTo(ce), ge = t("<div style='position:relative;width:100%;overflow:hidden'/>").appendTo(he), be = t("<div class='fc-event-container' style='position:absolute;z-index:8;top:0;left:0'/>").appendTo(ge), e = "<table class='fc-agenda-slots' style='width:100%' cellspacing='0'><tbody>", r = v(), o = u(d(r), je), u(r, Be), Ae = 0, a = 0; o > r; a++)i = r.getMinutes(), e += "<tr class='fc-slot" + a + " " + (i ? "fc-minor" : "") + "'>" + "<th class='fc-agenda-axis " + s + "'>" + (f && i ? "&nbsp;" : on(r, Ue("axisFormat"))) + "</th>" + "<td class='" + l + "'>" + "<div style='position:relative'>&nbsp;</div>" + "</td>" + "</tr>", u(r, Ue("slotMinutes")), Ae++;
            e += "</tbody></table>", Ce = t(e).appendTo(ge), M(Ce.find("td"))
        }

        function c() {
            var e = h();
            K && K.remove(), K = t(e).appendTo(n), ee = K.find("thead"), ne = ee.find("th").slice(1, -1), re = K.find("tbody"), ae = re.find("td").slice(0, -1), oe = ae.find("> div"), ie = ae.find(".fc-day-content > div"), se = ae.eq(0), le = oe.eq(0), B(ee.add(ee.find("tr"))), B(re.add(re.find("tr")))
        }

        function h() {
            var t = "<table style='width:100%' class='fc-agenda-days fc-border-separate' cellspacing='0'>" + g() + p() + "</table>";
            return t
        }

        function g() {
            var t, e, n, r = qe + "-widget-header", a = "";
            for (a += "<thead><tr>", Xe ? (t = nn(0, 0), e = on(t, Ve), Ye ? e += Je : e = Je + e, a += "<th class='fc-agenda-axis fc-week-number " + r + "'>" + q(e) + "</th>") : a += "<th class='fc-agenda-axis " + r + "'>&nbsp;</th>", n = 0; We > n; n++)t = nn(0, n), a += "<th class='fc-" + ke[t.getDay()] + " fc-col" + n + " " + r + "'>" + q(on(t, Ie)) + "</th>";
            return a += "<th class='fc-agenda-gutter " + r + "'>&nbsp;</th>" + "</tr>" + "</thead>"
        }

        function p() {
            var t, e, n, r, a, o = qe + "-widget-header", i = qe + "-widget-content", s = f(new Date), l = "";
            for (l += "<tbody><tr><th class='fc-agenda-axis " + o + "'>&nbsp;</th>", n = "", e = 0; We > e; e++)t = nn(0, e), a = ["fc-col" + e, "fc-" + ke[t.getDay()], i], +t == +s ? a.push(qe + "-state-highlight", "fc-today") : s > t ? a.push("fc-past") : a.push("fc-future"), r = "<td class='" + a.join(" ") + "'>" + "<div>" + "<div class='fc-day-content'>" + "<div style='position:relative'>&nbsp;</div>" + "</div>" + "</div>" + "</td>", n += r;
            return l += n, l += "<td class='fc-agenda-gutter " + i + "'>&nbsp;</td>" + "</tr>" + "</tbody>"
        }

        function m(t) {
            t === e && (t = Se), Se = t, sn = {};
            var n = re.position().top, r = he.position().top, a = Math.min(t - n, Ce.height() + r + 1);
            le.height(a - R(se)), ce.css("top", n), he.height(a - r - 1), Fe = Ce.find("tr:first").height() + 1, Ne = Ue("slotMinutes") / Re, ze = Fe / Ne
        }

        function w(e) {
            Ee = e, _e.clear(), Pe.clear();
            var n = ee.find("th:first");
            de && (n = n.add(de.find("th:first"))), n = n.add(Ce.find("th:first")), Te = 0, S(n.width("").each(function (e, n) {
                Te = Math.max(Te, t(n).outerWidth())
            }), Te);
            var r = K.find(".fc-agenda-gutter");
            de && (r = r.add(de.find("th.fc-agenda-gutter")));
            var a = he[0].clientWidth;
            He = he.width() - a, He ? (S(r, He), r.show().prev().removeClass("fc-last")) : r.hide().prev().addClass("fc-last"), xe = Math.floor((a - Te) / We), S(ne.slice(0, -1), xe)
        }

        function b() {
            function t() {
                he.scrollTop(r)
            }

            var e = v(), n = d(e);
            n.setHours(Ue("firstHour"));
            var r = _(e, n) + 1;
            t(), setTimeout(t, 0)
        }

        function D() {
            b()
        }

        function C(t) {
            t.click(E).mousedown(tn)
        }

        function M(t) {
            t.click(E).mousedown(U)
        }

        function E(t) {
            if (!Ue("selectable")) {
                var e = Math.min(We - 1, Math.floor((t.pageX - K.offset().left - Te) / xe)), n = nn(0, e), r = this.parentNode.className.match(/fc-slot(\d+)/);
                if (r) {
                    var a = parseInt(r[1]) * Ue("slotMinutes"), o = Math.floor(a / 60);
                    n.setHours(o), n.setMinutes(a % 60 + Be), Ze("dayClick", ae[e], n, !1, t)
                } else Ze("dayClick", ae[e], n, !0, t)
            }
        }

        function x(t, e, n) {
            n && Oe.build();
            for (var r = an(t, e), a = 0; r.length > a; a++) {
                var o = r[a];
                C(k(o.row, o.leftCol, o.row, o.rightCol))
            }
        }

        function k(t, e, n, r) {
            var a = Oe.rect(t, e, n, r, ce);
            return Ge(a, ce)
        }

        function H(t, e) {
            for (var n = 0; We > n; n++) {
                var r = nn(0, n), a = l(d(r), 1), o = new Date(Math.max(r, t)), i = new Date(Math.min(a, e));
                if (i > o) {
                    var s = Oe.rect(0, n, 0, n, ge), c = _(r, o), u = _(r, i);
                    s.top = c, s.height = u - c, M(Ge(s, ge))
                }
            }
        }

        function F(t) {
            return _e.left(t)
        }

        function N(t) {
            return Pe.left(t)
        }

        function z(t) {
            return _e.right(t)
        }

        function W(t) {
            return Pe.right(t)
        }

        function A(t) {
            return Ue("allDaySlot") && !t.row
        }

        function L(t) {
            var e = nn(0, t.col), n = t.row;
            return Ue("allDaySlot") && n--, n >= 0 && u(e, Be + n * Re), e
        }

        function _(t, n) {
            if (t = d(t, !0), u(d(t), Be) > n)return 0;
            if (n >= u(d(t), je))return Ce.height();
            var r = Ue("slotMinutes"), a = 60 * n.getHours() + n.getMinutes() - Be, o = Math.floor(a / r), i = sn[o];
            return i === e && (i = sn[o] = Ce.find("tr").eq(o).find("td div")[0].offsetTop), Math.max(0, Math.round(i - 1 + Fe * (a % r / r)))
        }

        function P() {
            return ve
        }

        function j(t) {
            var e = d(t.start);
            return t.allDay ? e : u(e, Ue("defaultEventMinutes"))
        }

        function I(t, e) {
            return e ? d(t) : u(d(t), Ue("slotMinutes"))
        }

        function X(t, e, n) {
            n ? Ue("allDaySlot") && x(t, l(d(e), 1), !0) : J(t, e)
        }

        function J(e, n) {
            var r = Ue("selectHelper");
            if (Oe.build(), r) {
                var a = rn(e).col;
                if (a >= 0 && We > a) {
                    var o = Oe.rect(0, a, 0, a, ge), i = _(e, e), s = _(e, n);
                    if (s > i) {
                        if (o.top = i, o.height = s - i, o.left += 2, o.width -= 5, t.isFunction(r)) {
                            var l = r(e, n);
                            l && (o.position = "absolute", Me = t(l).css(o).appendTo(ge))
                        } else o.isStart = !0, o.isEnd = !0, Me = t(en({title: "", start: e, end: n, className: ["fc-select-helper"], editable: !1}, o)), Me.css("opacity", Ue("dragOpacity"));
                        Me && (M(Me), ge.append(Me), S(Me, o.width, !0), T(Me, o.height, !0))
                    }
                }
            } else H(e, n)
        }

        function V() {
            $e(), Me && (Me.remove(), Me = null)
        }

        function U(e) {
            if (1 == e.which && Ue("selectable")) {
                Ke(e);
                var n;
                Le.start(function (t, e) {
                    if (V(), t && t.col == e.col && !A(t)) {
                        var r = L(e), a = L(t);
                        n = [r, u(d(r), Re), a, u(d(a), Re)].sort(O), J(n[0], n[3])
                    } else n = null
                }, e), t(document).one("mouseup", function (t) {
                    Le.stop(), n && (+n[0] == +n[1] && Z(n[0], !1, t), Qe(n[0], n[3], !1, t))
                })
            }
        }

        function Z(t, e, n) {
            Ze("dayClick", ae[rn(t).col], t, e, n)
        }

        function G(t, e) {
            Le.start(function (t) {
                if ($e(), t)if (A(t))k(t.row, t.col, t.row, t.col); else {
                    var e = L(t), n = u(d(e), Ue("defaultEventMinutes"));
                    H(e, n)
                }
            }, e)
        }

        function $(t, e, n) {
            var r = Le.stop();
            $e(), r && Ze("drop", t, L(r), A(r), e, n)
        }

        var Q = this;
        Q.renderAgenda = o, Q.setWidth = w, Q.setHeight = m, Q.afterRender = D, Q.defaultEventEnd = j, Q.timePosition = _, Q.getIsCellAllDay = A, Q.allDayRow = P, Q.getCoordinateGrid = function () {
            return Oe
        }, Q.getHoverListener = function () {
            return Le
        }, Q.colLeft = F, Q.colRight = z, Q.colContentLeft = N, Q.colContentRight = W, Q.getDaySegmentContainer = function () {
            return ue
        }, Q.getSlotSegmentContainer = function () {
            return be
        }, Q.getMinMinute = function () {
            return Be
        }, Q.getMaxMinute = function () {
            return je
        }, Q.getSlotContainer = function () {
            return ge
        }, Q.getRowCnt = function () {
            return 1
        }, Q.getColCnt = function () {
            return We
        }, Q.getColWidth = function () {
            return xe
        }, Q.getSnapHeight = function () {
            return ze
        }, Q.getSnapMinutes = function () {
            return Re
        }, Q.defaultSelectionEnd = I, Q.renderDayOverlay = x, Q.renderSelection = X, Q.clearSelection = V, Q.reportDayClick = Z, Q.dragStart = G, Q.dragStop = $, fe.call(Q, n, r, a), me.call(Q), pe.call(Q), te.call(Q);
        var K, ee, ne, re, ae, oe, ie, se, le, ce, ue, de, ve, he, ge, be, Ce, Me, Ee, Se, Te, xe, He, Fe, Re, Ne, ze, We, Ae, Oe, Le, _e, Pe, qe, Ye, Be, je, Ie, Xe, Je, Ve, Ue = Q.opt, Ze = Q.trigger, Ge = Q.renderOverlay, $e = Q.clearOverlays, Qe = Q.reportSelection, Ke = Q.unselect, tn = Q.daySelectionMousedown, en = Q.slotSegHtml, nn = Q.cellToDate, rn = Q.dateToCell, an = Q.rangeToSegments, on = r.formatDate, sn = {};
        Y(n.addClass("fc-agenda")), Oe = new ye(function (e, n) {
            function r(t) {
                return Math.max(l, Math.min(c, t))
            }

            var a, o, i;
            ne.each(function (e, r) {
                a = t(r), o = a.offset().left, e && (i[1] = o), i = [o], n[e] = i
            }), i[1] = o + a.outerWidth(), Ue("allDaySlot") && (a = ve, o = a.offset().top, e[0] = [o, o + a.outerHeight()]);
            for (var s = ge.offset().top, l = he.offset().top, c = l + he.outerHeight(), u = 0; Ae * Ne > u; u++)e.push([r(s + ze * u), r(s + ze * (u + 1))])
        }), Le = new we(Oe), _e = new De(function (t) {
            return oe.eq(t)
        }), Pe = new De(function (t) {
            return ie.eq(t)
        })
    }

    function te() {
        function n(t, e) {
            var n, r = t.length, o = [], i = [];
            for (n = 0; r > n; n++)t[n].allDay ? o.push(t[n]) : i.push(t[n]);
            y("allDaySlot") && (te(o, e), k()), s(a(i), e)
        }

        function r() {
            H().empty(), F().empty()
        }

        function a(e) {
            var n, r, a, s, l, c = Y(), f = W(), v = z(), h = t.map(e, i), g = [];
            for (r = 0; c > r; r++)for (n = P(0, r), u(n, f), l = o(e, h, n, u(d(n), v - f)), l = ee(l), a = 0; l.length > a; a++)s = l[a], s.col = r, g.push(s);
            return g
        }

        function o(t, e, n, r) {
            var a, o, i, s, l, c, u, f, v = [], h = t.length;
            for (a = 0; h > a; a++)o = t[a], i = o.start, s = e[a], s > n && r > i && (n > i ? (l = d(n), u = !1) : (l = i, u = !0), s > r ? (c = d(r), f = !1) : (c = s, f = !0), v.push({event: o, start: l, end: c, isStart: u, isEnd: f}));
            return v.sort(ue)
        }

        function i(t) {
            return t.end ? d(t.end) : u(d(t.start), y("defaultEventMinutes"))
        }

        function s(n, r) {
            var a, o, i, s, l, u, d, v, h, g, p, m, b, D, C, M, S = n.length, T = "", k = F(), H = y("isRTL");
            for (a = 0; S > a; a++)o = n[a], i = o.event, s = A(o.start, o.start), l = A(o.start, o.end), u = L(o.col), d = _(o.col), v = d - u, d -= .025 * v, v = d - u, h = v * (o.forwardCoord - o.backwardCoord), y("slotEventOverlap") && (h = Math.max(2 * (h - 10), h)), H ? (p = d - o.backwardCoord * v, g = p - h) : (g = u + o.backwardCoord * v, p = g + h), g = Math.max(g, u), p = Math.min(p, d), h = p - g, o.top = s, o.left = g, o.outerWidth = h, o.outerHeight = l - s, T += c(i, o);
            for (k[0].innerHTML = T, m = k.children(), a = 0; S > a; a++)o = n[a], i = o.event, b = t(m[a]), D = w("eventRender", i, i, b), D === !1 ? b.remove() : (D && D !== !0 && (b.remove(), b = t(D).css({position: "absolute", top: o.top, left: o.left}).appendTo(k)), o.element = b, i._id === r ? f(i, b, o) : b[0]._fci = a, V(i, b));
            for (E(k, n, f), a = 0; S > a; a++)o = n[a], (b = o.element) && (o.vsides = R(b, !0), o.hsides = x(b, !0), C = b.find(".fc-event-title"), C.length && (o.contentTop = C[0].offsetTop));
            for (a = 0; S > a; a++)o = n[a], (b = o.element) && (b[0].style.width = Math.max(0, o.outerWidth - o.hsides) + "px", M = Math.max(0, o.outerHeight - o.vsides), b[0].style.height = M + "px", i = o.event, o.contentTop !== e && 10 > M - o.contentTop && (b.find("div.fc-event-time").text(re(i.start, y("timeFormat")) + " - " + i.title), b.find("div.fc-event-title").remove()), w("eventAfterRender", i, i, b))
        }

        function c(t, e) {
            var n = "<", r = t.url, a = j(t, y), o = ["fc-event", "fc-event-vert"];
            return b(t) && o.push("fc-event-draggable"), e.isStart && o.push("fc-event-start"), e.isEnd && o.push("fc-event-end"), o = o.concat(t.className), t.source && (o = o.concat(t.source.className || [])), n += r ? "a href='" + q(t.url) + "'" : "div", n += " class='" + o.join(" ") + "'" + " style=" + "'" + "position:absolute;" + "top:" + e.top + "px;" + "left:" + e.left + "px;" + a + "'" + ">" + "<div class='fc-event-inner'>" + "<div class='fc-event-time'>" + q(ae(t.start, t.end, y("timeFormat"))) + "</div>" + "<div class='fc-event-title'>" + q(t.title || "") + "</div>" + "</div>" + "<div class='fc-event-bg'></div>", e.isEnd && D(t) && (n += "<div class='ui-resizable-handle ui-resizable-s'>=</div>"), n += "</" + (r ? "a" : "div") + ">"
        }

        function f(t, e, n) {
            var r = e.find("div.fc-event-time");
            b(t) && g(t, e, r), n.isEnd && D(t) && p(t, e, r), S(t, e)
        }

        function v(t, e, n) {
            function r() {
                c || (e.width(a).height("").draggable("option", "grid", null), c = !0)
            }

            var a, o, i, s = n.isStart, c = !0, u = N(), f = B(), v = I(), g = X(), p = W();
            e.draggable({opacity: y("dragOpacity", "month"), revertDuration: y("dragRevertDuration"), start: function (n, p) {
                w("eventDragStart", e, t, n, p), Z(t, e), a = e.width(), u.start(function (n, a) {
                    if (K(), n) {
                        o = !1;
                        var u = P(0, a.col), p = P(0, n.col);
                        i = h(p, u), n.row ? s ? c && (e.width(f - 10), T(e, v * Math.round((t.end ? (t.end - t.start) / Re : y("defaultEventMinutes")) / g)), e.draggable("option", "grid", [f, 1]), c = !1) : o = !0 : (Q(l(d(t.start), i), l(C(t), i)), r()), o = o || c && !i
                    } else r(), o = !0;
                    e.draggable("option", "revert", o)
                }, n, "drag")
            }, stop: function (n, a) {
                if (u.stop(), K(), w("eventDragStop", e, t, n, a), o)r(), e.css("filter", ""), U(t, e); else {
                    var s = 0;
                    c || (s = Math.round((e.offset().top - J().offset().top) / v) * g + p - (60 * t.start.getHours() + t.start.getMinutes())), G(this, t, i, s, c, n, a)
                }
            }})
        }

        function g(t, e, n) {
            function r() {
                K(), s && (f ? (n.hide(), e.draggable("option", "grid", null), Q(l(d(t.start), b), l(C(t), b))) : (a(D), n.css("display", ""), e.draggable("option", "grid", [T, x])))
            }

            function a(e) {
                var r, a = u(d(t.start), e);
                t.end && (r = u(d(t.end), e)), n.text(ae(a, r, y("timeFormat")))
            }

            var o, i, s, c, f, v, g, p, b, D, M, E = m.getCoordinateGrid(), S = Y(), T = B(), x = I(), k = X();
            e.draggable({scroll: !1, grid: [T, x], axis: 1 == S ? "y" : !1, opacity: y("dragOpacity"), revertDuration: y("dragRevertDuration"), start: function (n, r) {
                w("eventDragStart", e, t, n, r), Z(t, e), E.build(), o = e.position(), i = E.cell(n.pageX, n.pageY), s = c = !0, f = v = O(i), g = p = 0, b = 0, D = M = 0
            }, drag: function (t, n) {
                var a = E.cell(t.pageX, t.pageY);
                if (s = !!a) {
                    if (f = O(a), g = Math.round((n.position.left - o.left) / T), g != p) {
                        var l = P(0, i.col), u = i.col + g;
                        u = Math.max(0, u), u = Math.min(S - 1, u);
                        var d = P(0, u);
                        b = h(d, l)
                    }
                    f || (D = Math.round((n.position.top - o.top) / x) * k)
                }
                (s != c || f != v || g != p || D != M) && (r(), c = s, v = f, p = g, M = D), e.draggable("option", "revert", !s)
            }, stop: function (n, a) {
                K(), w("eventDragStop", e, t, n, a), s && (f || b || D) ? G(this, t, b, f ? 0 : D, f, n, a) : (s = !0, f = !1, g = 0, b = 0, D = 0, r(), e.css("filter", ""), e.css(o), U(t, e))
            }})
        }

        function p(t, e, n) {
            var r, a, o = I(), i = X();
            e.resizable({handles: {s: ".ui-resizable-handle"}, grid: o, start: function (n, o) {
                r = a = 0, Z(t, e), w("eventResizeStart", this, t, n, o)
            }, resize: function (s, l) {
                r = Math.round((Math.max(o, e.height()) - l.originalSize.height) / o), r != a && (n.text(ae(t.start, r || t.end ? u(M(t), i * r) : null, y("timeFormat"))), a = r)
            }, stop: function (n, a) {
                w("eventResizeStop", this, t, n, a), r ? $(this, t, 0, i * r, n, a) : U(t, e)
            }})
        }

        var m = this;
        m.renderEvents = n, m.clearEvents = r, m.slotSegHtml = c, de.call(m);
        var y = m.opt, w = m.trigger, b = m.isEventDraggable, D = m.isEventResizable, M = m.eventEnd, S = m.eventElementHandlers, k = m.setHeight, H = m.getDaySegmentContainer, F = m.getSlotSegmentContainer, N = m.getHoverListener, z = m.getMaxMinute, W = m.getMinMinute, A = m.timePosition, O = m.getIsCellAllDay, L = m.colContentLeft, _ = m.colContentRight, P = m.cellToDate, Y = m.getColCnt, B = m.getColWidth, I = m.getSnapHeight, X = m.getSnapMinutes, J = m.getSlotContainer, V = m.reportEventElement, U = m.showEvents, Z = m.hideEvents, G = m.eventDrop, $ = m.eventResize, Q = m.renderDayOverlay, K = m.clearOverlays, te = m.renderDayEvents, ne = m.calendar, re = ne.formatDate, ae = ne.formatDates;
        m.draggableDayEvent = v
    }

    function ee(t) {
        var e, n = ne(t), r = n[0];
        if (re(n), r) {
            for (e = 0; r.length > e; e++)ae(r[e]);
            for (e = 0; r.length > e; e++)oe(r[e], 0, 0)
        }
        return ie(n)
    }

    function ne(t) {
        var e, n, r, a = [];
        for (e = 0; t.length > e; e++) {
            for (n = t[e], r = 0; a.length > r && se(n, a[r]).length; r++);
            (a[r] || (a[r] = [])).push(n)
        }
        return a
    }

    function re(t) {
        var e, n, r, a, o;
        for (e = 0; t.length > e; e++)for (n = t[e], r = 0; n.length > r; r++)for (a = n[r], a.forwardSegs = [], o = e + 1; t.length > o; o++)se(a, t[o], a.forwardSegs)
    }

    function ae(t) {
        var n, r, a = t.forwardSegs, o = 0;
        if (t.forwardPressure === e) {
            for (n = 0; a.length > n; n++)r = a[n], ae(r), o = Math.max(o, 1 + r.forwardPressure);
            t.forwardPressure = o
        }
    }

    function oe(t, n, r) {
        var a, o = t.forwardSegs;
        if (t.forwardCoord === e)for (o.length ? (o.sort(ce), oe(o[0], n + 1, r), t.forwardCoord = o[0].backwardCoord) : t.forwardCoord = 1, t.backwardCoord = t.forwardCoord - (t.forwardCoord - r) / (n + 1), a = 0; o.length > a; a++)oe(o[a], 0, t.forwardCoord)
    }

    function ie(t) {
        var e, n, r, a = [];
        for (e = 0; t.length > e; e++)for (n = t[e], r = 0; n.length > r; r++)a.push(n[r]);
        return a
    }

    function se(t, e, n) {
        n = n || [];
        for (var r = 0; e.length > r; r++)le(t, e[r]) && n.push(e[r]);
        return n
    }

    function le(t, e) {
        return t.end > e.start && t.start < e.end
    }

    function ce(t, e) {
        return e.forwardPressure - t.forwardPressure || (t.backwardCoord || 0) - (e.backwardCoord || 0) || ue(t, e)
    }

    function ue(t, e) {
        return t.start - e.start || e.end - e.start - (t.end - t.start) || (t.event.title || "").localeCompare(e.event.title)
    }

    function fe(n, r, a) {
        function o(e, n) {
            var r = V[e];
            return t.isPlainObject(r) ? P(r, n || a) : r
        }

        function i(t, e) {
            return r.trigger.apply(r, [t, e || _].concat(Array.prototype.slice.call(arguments, 2), [_]))
        }

        function s(t) {
            var e = t.source || {};
            return X(t.startEditable, e.startEditable, o("eventStartEditable"), t.editable, e.editable, o("editable")) && !o("disableDragging")
        }

        function c(t) {
            var e = t.source || {};
            return X(t.durationEditable, e.durationEditable, o("eventDurationEditable"), t.editable, e.editable, o("editable")) && !o("disableResizing")
        }

        function f(t) {
            j = {};
            var e, n, r = t.length;
            for (e = 0; r > e; e++)n = t[e], j[n._id] ? j[n._id].push(n) : j[n._id] = [n]
        }

        function v() {
            j = {}, I = {}, J = []
        }

        function g(t) {
            return t.end ? d(t.end) : q(t)
        }

        function p(t, e) {
            J.push({event: t, element: e}), I[t._id] ? I[t._id].push(e) : I[t._id] = [e]
        }

        function m() {
            t.each(J, function (t, e) {
                _.trigger("eventDestroy", e.event, e.event, e.element)
            })
        }

        function y(t, n) {
            n.click(function (r) {
                return n.hasClass("ui-draggable-dragging") || n.hasClass("ui-resizable-resizing") ? e : i("eventClick", this, t, r)
            }).hover(function (e) {
                i("eventMouseover", this, t, e)
            }, function (e) {
                i("eventMouseout", this, t, e)
            })
        }

        function w(t, e) {
            D(t, e, "show")
        }

        function b(t, e) {
            D(t, e, "hide")
        }

        function D(t, e, n) {
            var r, a = I[t._id], o = a.length;
            for (r = 0; o > r; r++)e && a[r][0] == e[0] || a[r][n]()
        }

        function C(t, e, n, r, a, o, s) {
            var l = e.allDay, c = e._id;
            E(j[c], n, r, a), i("eventDrop", t, e, n, r, a, function () {
                E(j[c], -n, -r, l), B(c)
            }, o, s), B(c)
        }

        function M(t, e, n, r, a, o) {
            var s = e._id;
            S(j[s], n, r), i("eventResize", t, e, n, r, function () {
                S(j[s], -n, -r), B(s)
            }, a, o), B(s)
        }

        function E(t, n, r, a) {
            r = r || 0;
            for (var o, i = t.length, s = 0; i > s; s++)o = t[s], a !== e && (o.allDay = a), u(l(o.start, n, !0), r), o.end && (o.end = u(l(o.end, n, !0), r)), Y(o, V)
        }

        function S(t, e, n) {
            n = n || 0;
            for (var r, a = t.length, o = 0; a > o; o++)r = t[o], r.end = u(l(g(r), e, !0), n), Y(r, V)
        }

        function T(t) {
            return"object" == typeof t && (t = t.getDay()), G[t]
        }

        function x() {
            return U
        }

        function k(t, e, n) {
            for (e = e || 1; G[(t.getDay() + (n ? e : 0) + 7) % 7];)l(t, e)
        }

        function H() {
            var t = F.apply(null, arguments), e = R(t), n = N(e);
            return n
        }

        function F(t, e) {
            var n = _.getColCnt(), r = K ? -1 : 1, a = K ? n - 1 : 0;
            "object" == typeof t && (e = t.col, t = t.row);
            var o = t * n + (e * r + a);
            return o
        }

        function R(t) {
            var e = _.visStart.getDay();
            return t += $[e], 7 * Math.floor(t / U) + Q[(t % U + U) % U] - e
        }

        function N(t) {
            var e = d(_.visStart);
            return l(e, t), e
        }

        function z(t) {
            var e = W(t), n = A(e), r = O(n);
            return r
        }

        function W(t) {
            return h(t, _.visStart)
        }

        function A(t) {
            var e = _.visStart.getDay();
            return t += e, Math.floor(t / 7) * U + $[(t % 7 + 7) % 7] - $[e]
        }

        function O(t) {
            var e = _.getColCnt(), n = K ? -1 : 1, r = K ? e - 1 : 0, a = Math.floor(t / e), o = (t % e + e) % e * n + r;
            return{row: a, col: o}
        }

        function L(t, e) {
            for (var n = _.getRowCnt(), r = _.getColCnt(), a = [], o = W(t), i = W(e), s = A(o), l = A(i) - 1, c = 0; n > c; c++) {
                var u = c * r, f = u + r - 1, d = Math.max(s, u), v = Math.min(l, f);
                if (v >= d) {
                    var h = O(d), g = O(v), p = [h.col, g.col].sort(), m = R(d) == o, y = R(v) + 1 == i;
                    a.push({row: c, leftCol: p[0], rightCol: p[1], isStart: m, isEnd: y})
                }
            }
            return a
        }

        var _ = this;
        _.element = n, _.calendar = r, _.name = a, _.opt = o, _.trigger = i, _.isEventDraggable = s, _.isEventResizable = c, _.setEventData = f, _.clearEventData = v, _.eventEnd = g, _.reportEventElement = p, _.triggerEventDestroy = m, _.eventElementHandlers = y, _.showEvents = w, _.hideEvents = b, _.eventDrop = C, _.eventResize = M;
        var q = _.defaultEventEnd, Y = r.normalizeEvent, B = r.reportEventChange, j = {}, I = {}, J = [], V = r.options;
        _.isHiddenDay = T, _.skipHiddenDays = k, _.getCellsPerWeek = x, _.dateToCell = z, _.dateToDayOffset = W, _.dayOffsetToCellOffset = A, _.cellOffsetToCell = O, _.cellToDate = H, _.cellToCellOffset = F, _.cellOffsetToDayOffset = R, _.dayOffsetToDate = N, _.rangeToSegments = L;
        var U, Z = o("hiddenDays") || [], G = [], $ = [], Q = [], K = o("isRTL");
        (function () {
            o("weekends") === !1 && Z.push(0, 6);
            for (var e = 0, n = 0; 7 > e; e++)$[e] = n, G[e] = -1 != t.inArray(e, Z), G[e] || (Q[n] = e, n++);
            if (U = n, !U)throw"invalid hiddenDays"
        })()
    }

    function de() {
        function e(t, e) {
            var n = r(t, !1, !0);
            he(n, function (t, e) {
                N(t.event, e)
            }), w(n, e), he(n, function (t, e) {
                k("eventAfterRender", t.event, t.event, e)
            })
        }

        function n(t, e, n) {
            var a = r([t], !0, !1), o = [];
            return he(a, function (t, r) {
                t.row === e && r.css("top", n), o.push(r[0])
            }), o
        }

        function r(e, n, r) {
            var o, l, c = Z(), d = n ? t("<div/>") : c, v = a(e);
            return i(v), o = s(v), d[0].innerHTML = o, l = d.children(), n && c.append(l), u(v, l), he(v, function (t, e) {
                t.hsides = x(e, !0)
            }), he(v, function (t, e) {
                e.width(Math.max(0, t.outerWidth - t.hsides))
            }), he(v, function (t, e) {
                t.outerHeight = e.outerHeight(!0)
            }), f(v, r), v
        }

        function a(t) {
            for (var e = [], n = 0; t.length > n; n++) {
                var r = o(t[n]);
                e.push.apply(e, r)
            }
            return e
        }

        function o(t) {
            for (var e = t.start, n = C(t), r = ee(e, n), a = 0; r.length > a; a++)r[a].event = t;
            return r
        }

        function i(t) {
            for (var e = T("isRTL"), n = 0; t.length > n; n++) {
                var r = t[n], a = (e ? r.isEnd : r.isStart) ? V : X, o = (e ? r.isStart : r.isEnd) ? U : J, i = a(r.leftCol), s = o(r.rightCol);
                r.left = i, r.outerWidth = s - i
            }
        }

        function s(t) {
            for (var e = "", n = 0; t.length > n; n++)e += c(t[n]);
            return e
        }

        function c(t) {
            var e = "", n = T("isRTL"), r = t.event, a = r.url, o = ["fc-event", "fc-event-hori"];
            H(r) && o.push("fc-event-draggable"), t.isStart && o.push("fc-event-start"), t.isEnd && o.push("fc-event-end"), o = o.concat(r.className), r.source && (o = o.concat(r.source.className || []));
            var i = j(r, T);
            return e += a ? "<a href='" + q(a) + "'" : "<div", e += " class='" + o.join(" ") + "'" + " style=" + "'" + "position:absolute;" + "left:" + t.left + "px;" + i + "'" + ">" + "<div class='fc-event-inner'>", !r.allDay && t.isStart && (e += "<span class='fc-event-time'>" + q(G(r.start, r.end, T("timeFormat"))) + "</span>"), e += "<span class='fc-event-title'>" + q(r.title || "") + "</span>" + "</div>", t.isEnd && F(r) && (e += "<div class='ui-resizable-handle ui-resizable-" + (n ? "w" : "e") + "'>" + "&nbsp;&nbsp;&nbsp;" + "</div>"), e += "</" + (a ? "a" : "div") + ">"
        }

        function u(e, n) {
            for (var r = 0; e.length > r; r++) {
                var a = e[r], o = a.event, i = n.eq(r), s = k("eventRender", o, o, i);
                s === !1 ? i.remove() : (s && s !== !0 && (s = t(s).css({position: "absolute", left: a.left}), i.replaceWith(s), i = s), a.element = i)
            }
        }

        function f(t, e) {
            var n = v(t), r = y(), a = [];
            if (e)for (var o = 0; r.length > o; o++)r[o].height(n[o]);
            for (var o = 0; r.length > o; o++)a.push(r[o].position().top);
            he(t, function (t, e) {
                e.css("top", a[t.row] + t.top)
            })
        }

        function v(t) {
            for (var e = P(), n = B(), r = [], a = g(t), o = 0; e > o; o++) {
                for (var i = a[o], s = [], l = 0; n > l; l++)s.push(0);
                for (var c = 0; i.length > c; c++) {
                    var u = i[c];
                    u.top = L(s.slice(u.leftCol, u.rightCol + 1));
                    for (var l = u.leftCol; u.rightCol >= l; l++)s[l] = u.top + u.outerHeight
                }
                r.push(L(s))
            }
            return r
        }

        function g(t) {
            var e, n, r, a = P(), o = [];
            for (e = 0; t.length > e; e++)n = t[e], r = n.row, n.element && (o[r] ? o[r].push(n) : o[r] = [n]);
            for (r = 0; a > r; r++)o[r] = p(o[r] || []);
            return o
        }

        function p(t) {
            for (var e = [], n = m(t), r = 0; n.length > r; r++)e.push.apply(e, n[r]);
            return e
        }

        function m(t) {
            t.sort(ge);
            for (var e = [], n = 0; t.length > n; n++) {
                for (var r = t[n], a = 0; e.length > a && ve(r, e[a]); a++);
                e[a] ? e[a].push(r) : e[a] = [r]
            }
            return e
        }

        function y() {
            var t, e = P(), n = [];
            for (t = 0; e > t; t++)n[t] = I(t).find("div.fc-day-content > div");
            return n
        }

        function w(t, e) {
            var n = Z();
            he(t, function (t, n, r) {
                var a = t.event;
                a._id === e ? b(a, n, t) : n[0]._fci = r
            }), E(n, t, b)
        }

        function b(t, e, n) {
            H(t) && S.draggableDayEvent(t, e, n), n.isEnd && F(t) && S.resizableDayEvent(t, e, n), z(t, e)
        }

        function D(t, e) {
            var n, r = te();
            e.draggable({delay: 50, opacity: T("dragOpacity"), revertDuration: T("dragRevertDuration"), start: function (a, o) {
                k("eventDragStart", e, t, a, o), A(t, e), r.start(function (r, a, o, i) {
                    if (e.draggable("option", "revert", !r || !o && !i), Q(), r) {
                        var s = ne(a), c = ne(r);
                        n = h(c, s), $(l(d(t.start), n), l(C(t), n))
                    } else n = 0
                }, a, "drag")
            }, stop: function (a, o) {
                r.stop(), Q(), k("eventDragStop", e, t, a, o), n ? O(this, t, n, 0, t.allDay, a, o) : (e.css("filter", ""), W(t, e))
            }})
        }

        function M(e, r, a) {
            var o = T("isRTL"), i = o ? "w" : "e", s = r.find(".ui-resizable-" + i), c = !1;
            Y(r), r.mousedown(function (t) {
                t.preventDefault()
            }).click(function (t) {
                c && (t.preventDefault(), t.stopImmediatePropagation())
            }), s.mousedown(function (o) {
                function s(n) {
                    k("eventResizeStop", this, e, n), t("body").css("cursor", ""), u.stop(), Q(), f && _(this, e, f, 0, n), setTimeout(function () {
                        c = !1
                    }, 0)
                }

                if (1 == o.which) {
                    c = !0;
                    var u = te();
                    P(), B();
                    var f, d, v = r.css("top"), h = t.extend({}, e), g = ie(oe(e.start));
                    K(), t("body").css("cursor", i + "-resize").one("mouseup", s), k("eventResizeStart", this, e, o), u.start(function (r, o) {
                        if (r) {
                            var s = re(o), c = re(r);
                            if (c = Math.max(c, g), f = ae(c) - ae(s)) {
                                h.end = l(R(e), f, !0);
                                var u = d;
                                d = n(h, a.row, v), d = t(d), d.find("*").css("cursor", i + "-resize"), u && u.remove(), A(e)
                            } else d && (W(e), d.remove(), d = null);
                            Q(), $(e.start, l(C(e), f))
                        }
                    }, o)
                }
            })
        }

        var S = this;
        S.renderDayEvents = e, S.draggableDayEvent = D, S.resizableDayEvent = M;
        var T = S.opt, k = S.trigger, H = S.isEventDraggable, F = S.isEventResizable, R = S.eventEnd, N = S.reportEventElement, z = S.eventElementHandlers, W = S.showEvents, A = S.hideEvents, O = S.eventDrop, _ = S.eventResize, P = S.getRowCnt, B = S.getColCnt;
        S.getColWidth;
        var I = S.allDayRow, X = S.colLeft, J = S.colRight, V = S.colContentLeft, U = S.colContentRight;
        S.dateToCell;
        var Z = S.getDaySegmentContainer, G = S.calendar.formatDates, $ = S.renderDayOverlay, Q = S.clearOverlays, K = S.clearSelection, te = S.getHoverListener, ee = S.rangeToSegments, ne = S.cellToDate, re = S.cellToCellOffset, ae = S.cellOffsetToDayOffset, oe = S.dateToDayOffset, ie = S.dayOffsetToCellOffset
    }

    function ve(t, e) {
        for (var n = 0; e.length > n; n++) {
            var r = e[n];
            if (r.leftCol <= t.rightCol && r.rightCol >= t.leftCol)return!0
        }
        return!1
    }

    function he(t, e) {
        for (var n = 0; t.length > n; n++) {
            var r = t[n], a = r.element;
            a && e(r, a, n)
        }
    }

    function ge(t, e) {
        return e.rightCol - e.leftCol - (t.rightCol - t.leftCol) || e.event.allDay - t.event.allDay || t.event.start - e.event.start || (t.event.title || "").localeCompare(e.event.title)
    }

    function pe() {
        function e(t, e, a) {
            n(), e || (e = l(t, a)), c(t, e, a), r(t, e, a)
        }

        function n(t) {
            f && (f = !1, u(), s("unselect", null, t))
        }

        function r(t, e, n, r) {
            f = !0, s("select", null, t, e, n, r)
        }

        function a(e) {
            var a = o.cellToDate, s = o.getIsCellAllDay, l = o.getHoverListener(), f = o.reportDayClick;
            if (1 == e.which && i("selectable")) {
                n(e);
                var d;
                l.start(function (t, e) {
                    u(), t && s(t) ? (d = [a(e), a(t)].sort(O), c(d[0], d[1], !0)) : d = null
                }, e), t(document).one("mouseup", function (t) {
                    l.stop(), d && (+d[0] == +d[1] && f(d[0], !0, t), r(d[0], d[1], !0, t))
                })
            }
        }

        var o = this;
        o.select = e, o.unselect = n, o.reportSelection = r, o.daySelectionMousedown = a;
        var i = o.opt, s = o.trigger, l = o.defaultSelectionEnd, c = o.renderSelection, u = o.clearSelection, f = !1;
        i("selectable") && i("unselectAuto") && t(document).mousedown(function (e) {
            var r = i("unselectCancel");
            r && t(e.target).parents(r).length || n(e)
        })
    }

    function me() {
        function e(e, n) {
            var r = o.shift();
            return r || (r = t("<div class='fc-cell-overlay' style='position:absolute;z-index:3'/>")), r[0].parentNode != n[0] && r.appendTo(n), a.push(r.css(e).show()), r
        }

        function n() {
            for (var t; t = a.shift();)o.push(t.hide().unbind())
        }

        var r = this;
        r.renderOverlay = e, r.clearOverlays = n;
        var a = [], o = []
    }

    function ye(t) {
        var e, n, r = this;
        r.build = function () {
            e = [], n = [], t(e, n)
        }, r.cell = function (t, r) {
            var a, o = e.length, i = n.length, s = -1, l = -1;
            for (a = 0; o > a; a++)if (r >= e[a][0] && e[a][1] > r) {
                s = a;
                break
            }
            for (a = 0; i > a; a++)if (t >= n[a][0] && n[a][1] > t) {
                l = a;
                break
            }
            return s >= 0 && l >= 0 ? {row: s, col: l} : null
        }, r.rect = function (t, r, a, o, i) {
            var s = i.offset();
            return{top: e[t][0] - s.top, left: n[r][0] - s.left, width: n[o][1] - n[r][0], height: e[a][1] - e[t][0]}
        }
    }

    function we(e) {
        function n(t) {
            be(t);
            var n = e.cell(t.pageX, t.pageY);
            (!n != !i || n && (n.row != i.row || n.col != i.col)) && (n ? (o || (o = n), a(n, o, n.row - o.row, n.col - o.col)) : a(n, o), i = n)
        }

        var r, a, o, i, s = this;
        s.start = function (s, l, c) {
            a = s, o = i = null, e.build(), n(l), r = c || "mousemove", t(document).bind(r, n)
        }, s.stop = function () {
            return t(document).unbind(r, n), i
        }
    }

    function be(t) {
        t.pageX === e && (t.pageX = t.originalEvent.pageX, t.pageY = t.originalEvent.pageY)
    }

    function De(t) {
        function n(e) {
            return a[e] = a[e] || t(e)
        }

        var r = this, a = {}, o = {}, i = {};
        r.left = function (t) {
            return o[t] = o[t] === e ? n(t).position().left : o[t]
        }, r.right = function (t) {
            return i[t] = i[t] === e ? r.left(t) + n(t).width() : i[t]
        }, r.clear = function () {
            a = {}, o = {}, i = {}
        }
    }

    var Ce = {defaultView: "month", aspectRatio: 1.35, header: {left: "title", center: "", right: "today prev,next"}, weekends: !0, weekNumbers: !1, weekNumberCalculation: "iso", weekNumberTitle: "W", allDayDefault: !0, ignoreTimezone: !0, lazyFetching: !0, startParam: "start", endParam: "end", titleFormat: {month: "MMMM yyyy", week: "MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}", day: "dddd, MMM d, yyyy"}, columnFormat: {month: "ddd", week: "ddd M/d", day: "dddd M/d"}, timeFormat: {"": "h(:mm)t"}, isRTL: !1, firstDay: 0, monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], buttonText: {prev: "<span class='fc-text-arrow'>&lsaquo;</span>", next: "<span class='fc-text-arrow'>&rsaquo;</span>", prevYear: "<span class='fc-text-arrow'>&laquo;</span>", nextYear: "<span class='fc-text-arrow'>&raquo;</span>", today: "today", month: "month", week: "week", day: "day"}, theme: !1, buttonIcons: {prev: "circle-triangle-w", next: "circle-triangle-e"}, unselectAuto: !0, dropAccept: "*", handleWindowResize: !0}, Me = {header: {left: "next,prev today", center: "", right: "title"}, buttonText: {prev: "<span class='fc-text-arrow'>&rsaquo;</span>", next: "<span class='fc-text-arrow'>&lsaquo;</span>", prevYear: "<span class='fc-text-arrow'>&raquo;</span>", nextYear: "<span class='fc-text-arrow'>&laquo;</span>"}, buttonIcons: {prev: "circle-triangle-e", next: "circle-triangle-w"}}, Ee = t.fullCalendar = {version: "1.6.4"}, Se = Ee.views = {};
    t.fn.fullCalendar = function (n) {
        if ("string" == typeof n) {
            var a, o = Array.prototype.slice.call(arguments, 1);
            return this.each(function () {
                var r = t.data(this, "fullCalendar");
                if (r && t.isFunction(r[n])) {
                    var i = r[n].apply(r, o);
                    a === e && (a = i), "destroy" == n && t.removeData(this, "fullCalendar")
                }
            }), a !== e ? a : this
        }
        n = n || {};
        var i = n.eventSources || [];
        return delete n.eventSources, n.events && (i.push(n.events), delete n.events), n = t.extend(!0, {}, Ce, n.isRTL || n.isRTL === e && Ce.isRTL ? Me : {}, n), this.each(function (e, a) {
            var o = t(a), s = new r(o, n, i);
            o.data("fullCalendar", s), s.render()
        }), this
    }, Ee.sourceNormalizers = [], Ee.sourceFetchers = [];
    var Te = {dataType: "json", cache: !1}, xe = 1;
    Ee.addDays = l, Ee.cloneDate = d, Ee.parseDate = p, Ee.parseISO8601 = m, Ee.parseTime = y, Ee.formatDate = w, Ee.formatDates = b;
    var ke = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"], He = 864e5, Fe = 36e5, Re = 6e4, Ne = {s: function (t) {
        return t.getSeconds()
    }, ss: function (t) {
        return _(t.getSeconds())
    }, m: function (t) {
        return t.getMinutes()
    }, mm: function (t) {
        return _(t.getMinutes())
    }, h: function (t) {
        return t.getHours() % 12 || 12
    }, hh: function (t) {
        return _(t.getHours() % 12 || 12)
    }, H: function (t) {
        return t.getHours()
    }, HH: function (t) {
        return _(t.getHours())
    }, d: function (t) {
        return t.getDate()
    }, dd: function (t) {
        return _(t.getDate())
    }, ddd: function (t, e) {
        return e.dayNamesShort[t.getDay()]
    }, dddd: function (t, e) {
        return e.dayNames[t.getDay()]
    }, M: function (t) {
        return t.getMonth() + 1
    }, MM: function (t) {
        return _(t.getMonth() + 1)
    }, MMM: function (t, e) {
        return e.monthNamesShort[t.getMonth()]
    }, MMMM: function (t, e) {
        return e.monthNames[t.getMonth()]
    }, yy: function (t) {
        return(t.getFullYear() + "").substring(2)
    }, yyyy: function (t) {
        return t.getFullYear()
    }, t: function (t) {
        return 12 > t.getHours() ? "a" : "p"
    }, tt: function (t) {
        return 12 > t.getHours() ? "am" : "pm"
    }, T: function (t) {
        return 12 > t.getHours() ? "A" : "P"
    }, TT: function (t) {
        return 12 > t.getHours() ? "AM" : "PM"
    }, u: function (t) {
        return w(t, "yyyy-MM-dd'T'HH:mm:ss'Z'")
    }, S: function (t) {
        var e = t.getDate();
        return e > 10 && 20 > e ? "th" : ["st", "nd", "rd"][e % 10 - 1] || "th"
    }, w: function (t, e) {
        return e.weekNumberCalculation(t)
    }, W: function (t) {
        return D(t)
    }};
    Ee.dateFormatters = Ne, Ee.applyAll = I, Se.month = J, Se.basicWeek = V, Se.basicDay = U, n({weekMode: "fixed"}), Se.agendaWeek = $, Se.agendaDay = Q, n({allDaySlot: !0, allDayText: "all-day", firstHour: 6, slotMinutes: 30, defaultEventMinutes: 120, axisFormat: "h(:mm)tt", timeFormat: {agenda: "h:mm{ - h:mm}"}, dragOpacity: {agenda: .5}, minTime: 0, maxTime: 24, slotEventOverlap: !0})
})(jQuery);